package JavaSE.CODE.ClassInCommonUse.Object;

import java.util.Objects;

public class Student extends People{

    int age=10;
    String name = "mm";
    //重写的方法修饰符不能比父类更严格，因为父类满足的，子类也要满足

    public Student(int age){
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "age=" + age  +
                '}';
    }

    @Override//传进来的也是一个student对象，只不过当时以Object接收了，后续还要转换回Student，因为不会自动转换
    //这里只是重写了student的equals方法，其他的方法并未重写，例如可以在这里面继续使用字符串的equals方法
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
//        if(!(o instanceof Student)) return false;
        //instanceof：判断对象是否是某些类型
        Student student = (Student) o;
        return age == student.age && name.equals(student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(age);
    }

    @Override
    protected void finalize() throws Throwable {
        System.out.println(this.name + "is gone");
    }
}
